package com.abc.ollama.vo;

import lombok.Data;

import java.util.List;

/*
    model: （必需）模型名称
    messages: 聊天的消息，可以用于保持聊天记忆
    tools: 如果支持，模型可以使用的工具。需要将 stream 设置为 false


    message 对象具有以下字段：
    role: 消息的角色，可以是 system、user、assistant 或 tool
    content: 消息的内容
    images（可选）: 要包含在消息中的图像列表（适用于多模态模型，如 llava）
    tool_calls（可选）: 模型希望使用的工具列表
    高级参数（可选）：

    format: 返回响应的格式。目前唯一接受的值是 json
    options: 文档中列出的其他模型参数，如 Modelfile 中的 temperature
    stream: 如果设置为 false，响应将作为单个响应对象返回，而不是一系列对象
    keep_alive: 控制请求后模型在内存中保持加载的时间（默认：5m）
*/

@Data
public class OllamaChatRequest {
    private String model;
    private List<OllamaMessage> messages;
//    private String format;
    private OllamaOptions options;
    private boolean stream;
    private String keep_alive = "5m";
    private int max_tokens = 8192;
    private double temperature = 0.6;
    private int top_k = 50;
    private double top_p = 0.7;

    @Override
    public String toString() {
        return "OllamaChatRequest{" +
                "model='" + model + '\'' +
                ", messages=" + messages +
                ", options=" + options +
                ", stream=" + stream +
                ", keep_alive='" + keep_alive + '\'' +
                ", max_tokens=" + max_tokens +
                ", temperature=" + temperature +
                ", top_k=" + top_k +
                ", top_p=" + top_p +
                '}';
    }
}
